﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL;
using BLL;

public partial class admin_CateClass_ListCateClass : System.Web.UI.Page
{

    CategoryBLL data = new CategoryBLL();
    ArticleBLL articleDB = new ArticleBLL();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Session["url_back_admin"] = Request.RawUrl;

            //LoadCategory();
            ShowData();
        }
    }

    //private void ShowChild(int parentId, string space)
    //{
    //    List<Category> listDataSource = data.GetByParent(parentId);

    //    foreach (Category item in listDataSource)
    //    {
    //        ListItem obj = new ListItem(space + item.Name, item.Id.ToString());
    //        dropParent.Items.Add(obj);

    //        ShowChild(item.Id, space + "- - - ");
    //    }
    //}
    //private void LoadCategory()
    //{
    //    dropParent.Items.Clear();
    //    ShowChild(14, " - - ");
    //    ListItem itemRoot = new ListItem("Danh sách khóa học", "14");
    //    dropParent.Items.Insert(0, itemRoot);

    //}
    private void ShowData()
    {
        int parentId = 14;

        if (dropIsEnable.SelectedIndex == 0)
        {
            //if (parentId != -1)
                gridView.DataSource = data.GetByParent(parentId);
            //else
            //    gridView.DataSource = data.GetAll();
        }
        else
        {
            bool isEnable = true;
            if (dropIsEnable.SelectedValue == "2") isEnable = false;

            //if (parentId != -1)
                gridView.DataSource = data.GetByParent(parentId, isEnable);
            //else
            //    gridView.DataSource = data.GetAll(isEnable);
        }
        gridView.DataBind();

        //Bo mui ten len xuong dau va cuoi
        if (gridView.Rows.Count > 0)
        {
            gridView.Rows[0].Cells[6].Enabled = false;
            gridView.Rows[gridView.Rows.Count - 1].Cells[5].Enabled = false;
        }
    }
    private void Delete_Dequy(int id)
    {
        //Delete article
        articleDB.DeleteByCate(id);
        //Delete menu      

        List<Category> listDataSource = data.GetByParent(id);
        foreach (Category item in listDataSource)
        {
            if (item.Image != "")
            {
                Myfunction.DeleteFile("Images/Category", item.Image);
            }

            Delete_Dequy(item.Id);
        }
        if (!data.GetById(id).isDelete)
            Myfunction.ThongBao(lbThongBao, "Danh mục " + data.GetById(id).Name + " là danh mục cấu hình, không được xóa !");
        else
            data.Delete(id);
    }
    private void Enable(bool isEnable)
    {
        foreach (GridViewRow item in gridView.Rows)
        {
            foreach (Control ctrl in item.Cells[1].Controls)
            {
                if (ctrl.GetType() == typeof(CheckBox))
                {
                    CheckBox check = (CheckBox)ctrl;
                    if (check.Checked)
                    {
                        int id = Convert.ToInt32(item.Cells[2].Text);
                        data.Enable(id, isEnable);
                    }
                    break;
                }
            }
        }
        ShowData();
    }
    protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        try
        {
            if (e.Row.RowIndex >= 0) //Bo qua dong dau
            {
                int id = Convert.ToInt32(e.Row.Cells[2].Text);
                if (e.Row.Cells[4].Text == "0") e.Row.Cells[4].Text = "Danh mục gốc";
                else e.Row.Cells[4].Text = data.GetById(Convert.ToInt32(e.Row.Cells[4].Text)).Name;

                bool isEnable = data.GetById(id).isEnable;

                //Icon check
                Image img = new Image();
                foreach (Control item in e.Row.Cells[8].Controls)
                {
                    if (item.GetType() == typeof(Image))
                    {
                        img = (Image)item;
                        break;
                    }
                }
                if (isEnable)
                    img.ImageUrl = "~/Images/check.png";
                else
                {
                    img.ImageUrl = "~/Images/an.png";

                }

            }
        }
        catch { }
    }
    protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        lbThongBao.Text = "";
        try
        {
            gridView.PageIndex = e.NewPageIndex;
            ShowData();
        }
        catch { }
    }
    protected void gridView_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        if ((int)Session["Role"] != 1)
        {
            lbThongBao.Text = "Bạn không có quyền thực hiện thao tác này ! ";
            return;
        }
        try
        {
            lbThongBao.Text = "";
            int id = Convert.ToInt32(gridView.Rows[e.RowIndex].Cells[2].Text);
            Category category = data.GetById(id);
            if (!category.isDelete)
            {
                Myfunction.ThongBao(lbThongBao, "Đây là danh mục cấu hình ! Không được xóa");
                return;
            }
            //delete image
            Myfunction.DeleteFile("Images/Category", category.Image);
            Delete_Dequy(id);
            Myfunction.ThongBao(lbThongBao, "Danh mục đã được xóa");

            ShowData();
        }
        catch (Exception ex)
        {
            Myfunction.ThongBao(lbThongBao, ex.Message);
        }
    }
    protected void gridView_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if ((int)Session["Role"] != 1)
        {
            lbThongBao.Text = "Bạn không có quyền thực hiện thao tác này ! ";
            return;
        }
        try
        {
            lbThongBao.Text = "";
            if (e.CommandName.Equals("Up"))
            {
                int index = Convert.ToInt32(e.CommandArgument);
                int idFirst = Convert.ToInt32(gridView.Rows[index].Cells[2].Text);
                int idSecond = Convert.ToInt32(gridView.Rows[index - 1].Cells[2].Text);

                if (data.GetById(idFirst).Parent != data.GetById(idSecond).Parent)
                {
                    Myfunction.ThongBao(lbThongBao, "Chỉ được đổi vị trí 2 danh mục có cùng danh mục cha");
                    return;
                }

                data.SwapSort(idFirst, idSecond);
            }
            else if (e.CommandName.Equals("Down"))
            {
                int index = Convert.ToInt32(e.CommandArgument);
                int idFirst = Convert.ToInt32(gridView.Rows[index].Cells[2].Text);
                int idSecond = Convert.ToInt32(gridView.Rows[index + 1].Cells[2].Text);

                if (data.GetById(idFirst).Parent != data.GetById(idSecond).Parent)
                {
                    Myfunction.ThongBao(lbThongBao, "Chỉ được đổi vị trí 2 danh mục có cùng danh mục cha");
                    return;
                }

                data.SwapSort(idFirst, idSecond);
            }
            ShowData();

        }
        catch (Exception ex)
        {
            Myfunction.ThongBao(lbThongBao, ex.Message);
        }
    }
    protected void btnAdd_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/admin/CateClass/DetailCateClass.aspx");
    }
    protected void btnVisible_Click(object sender, EventArgs e)
    {
        if ((int)Session["Role"] != 1)
        {
            lbThongBao.Text = "Bạn không có quyền thực hiện thao tác này ! ";
            return;
        }
        lbThongBao.Text = "";
        Enable(false);
    }
    protected void btnEnable_Click(object sender, EventArgs e)
    {
        if ((int)Session["Role"] != 1)
        {
            lbThongBao.Text = "Bạn không có quyền thực hiện thao tác này ! ";
            return;
        }
        lbThongBao.Text = "";
        Enable(true);
    }
    protected void btnXoaChon_Click(object sender, EventArgs e)
    {
        if ((int)Session["Role"] != 1)
        {
            lbThongBao.Text = "Bạn không có quyền thực hiện thao tác này ! ";
            return;
        }
        try
        {
            lbThongBao.Text = "";
            foreach (GridViewRow item in gridView.Rows)
            {
                foreach (Control ctrl in item.Cells[1].Controls)
                {
                    if (ctrl.GetType() == typeof(CheckBox))
                    {
                        CheckBox check = (CheckBox)ctrl;
                        if (check.Checked)
                        {
                            int id = Convert.ToInt32(item.Cells[2].Text);
                            Delete_Dequy(id);
                        }
                        break;
                    }
                }
            }
            ShowData();
        }
        catch (Exception ex)
        {
            Myfunction.ThongBao(lbThongBao, ex.Message);
        }
    }
    protected void linkCheckAll_Click(object sender, EventArgs e)
    {
        lbThongBao.Text = "";
        foreach (GridViewRow item in gridView.Rows)
        {
            foreach (Control ctrl in item.Cells[1].Controls)
            {
                if (ctrl.GetType() == typeof(CheckBox))
                {
                    CheckBox check = (CheckBox)ctrl;
                    check.Checked = true;
                    break;
                }
            }
        }
    }
    protected void linkUnCheckAll_Click(object sender, EventArgs e)
    {
        lbThongBao.Text = "";
        foreach (GridViewRow item in gridView.Rows)
        {
            foreach (Control ctrl in item.Cells[1].Controls)
            {
                if (ctrl.GetType() == typeof(CheckBox))
                {
                    CheckBox check = (CheckBox)ctrl;
                    check.Checked = false;
                    break;
                }
            }
        }
    }
    protected void dropIsEnable_SelectedIndexChanged(object sender, EventArgs e)
    {
        lbThongBao.Text = "";
        ShowData();
    }
    protected void dropCountRow_SelectedIndexChanged(object sender, EventArgs e)
    {
        lbThongBao.Text = "";
        gridView.PageSize = Convert.ToInt32(dropPageSize.SelectedValue);
        ShowData();
    }
    //protected void dropParent_SelectedIndexChanged(object sender, EventArgs e)
    //{
    //    lbThongBao.Text = "";
    //    ShowData();
    //}
}